﻿using System;
using System.Web.UI;
using PortalCurriculo.Domain;
using PortalCurriculo.Util.Translation;
using PortalCurriculo.WebUI.Helpers;

namespace PortalCurriculo.WebUI.UserControls.Curriculo
{
    public partial class CadastroProfissional : UserControl
    {
        private const string TextoDisponibilidade = "[Disponibilidade] dias";
        private Profissional profissional;
        public bool Edicao { private get; set; }
        public bool CortarTexto { private get; set; }

        public byte Disponibilidade
        {
            get { return (byte) txtDisponibilidade.Value; }
        }

        public string CartaApresentacao
        {
            get { return txtCartaApresentacao.Text; }
        }

        public bool Imediato
        {
            get { return chkImediata.Checked; }
        }

        public Profissional Profissional
        {
            private get { return profissional; }
            set
            {
                profissional = value;
                PreencherTela();
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;
            PreencherTela();
        }

        private void PreencherTela()
        {
            txtCartaApresentacao.Visible = txtDisponibilidade.Visible = chkImediata.Visible = Edicao;
            lblCartaApresentacao.Visible = lblDisponibilidade.Visible = !Edicao;
            labelCartaApresentacao.Attributes.Add("for",
                                                  Edicao ? txtCartaApresentacao.ClientID : lblCartaApresentacao.ClientID);
            labelDisponibilidade.Attributes.Add("for",
                                                Edicao ? txtDisponibilidade.ClientID : lblDisponibilidade.ClientID);

            if (Profissional == null) return;

            lblCartaApresentacao.Text = txtCartaApresentacao.Text = CortarTexto
                                                                        ? new PageHelper().CortarTexto(Profissional.CartaApresentacao, 250)
                                                                        : Profissional.CartaApresentacao;

            lblDisponibilidade.Text = TextoDisponibilidade;
            lblDisponibilidade.Text = lblDisponibilidade.Text.Replace("[Disponibilidade]",
                                                                      Profissional.DisponibilidadeInicio.ToString());
            txtDisponibilidade.Value = (int) Profissional.DisponibilidadeInicio;
            chkImediata.Checked = profissional.DisponibilidadeInicio == 0;
            txtDisponibilidade.Enabled = profissional.DisponibilidadeInicio != 0;

            if (Profissional.DisponibilidadeInicio == 0)
                lblDisponibilidade.Text = Translator.TranslateMessage(Messages.Imediato, AppRelativeVirtualPath);
        }

        protected void chkImediata_CheckedChanged(object sender, EventArgs e)
        {
            txtDisponibilidade.Enabled = !chkImediata.Checked;
        }
    }
}